package thinkingJava.chapter15;

import java.lang.reflect.Array;

public class GenericArrayWithTypeToken<T> {
	private T[] array;
	@SuppressWarnings("unchecked")
	public GenericArrayWithTypeToken(Class<T> type,int sz) {
		array = (T[])Array.newInstance(type, sz);
	}
	public void put(int index, T item) {
		array[index] = item;
	}
	public T get(int index) {
		return array[index];
	}
	public T[] rep() {
		return array;
	}
	public static void main(String[] args) {
		GenericArrayWithTypeToken<Integer> gia = new GenericArrayWithTypeToken<Integer>(Integer.class,10);
		for (int i = 0; i < 10; i ++) {
			gia.put(i, i);
		}
		for(int i = 0; i < 10 ; i ++) {
			System.out.print(gia.get(i) + " ");
		}
		try {
			Integer[] ia = gia.rep();
			System.out.println(ia);
		} catch (Exception e) {
			System.out.println("Error!");
		}
	}
}
